package progressbar

import (
	"fmt"
	"strings"
	"time"
)

type ProgressBar struct {
	total int // 总进度
	done  chan bool
}

// New 创建一个新的 Loading 实例
func NewProgressBar() *ProgressBar {
	return &ProgressBar{
		total: 0,
		done:  make(chan bool),
	}
}

// Start 启动 loading 动画
func (p *ProgressBar) Start() {
	// 初始化进度条
	p.total = 10 // 假设总进度为100，可以根据实际情况调整
	go func() {
		for {
			select {
			case <-p.done:
				// 当接收到done信号时，停止动画
				fmt.Printf("\r%s\n", "")
				return
			default:
				for i := 0; i <= p.total; i++ {
					fmt.Printf("\r[%-50s] %d%%", strings.Repeat("=", i/2), i)
					time.Sleep(50 * time.Millisecond)
				}
			}
		}
	}()
}

// Stop 停止 ProgressBar 的动画
func (p *ProgressBar) Stop() {
	p.total = 100
	p.done <- true
}
